/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
"use strict";

var $protobuf = require("protobufjs/minimal");

// Common aliases
var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;

// Exported root namespace
var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});

$root.s2c_base = (function() {

    /**
     * Properties of a s2c_base.
     * @exports Is2c_base
     * @interface Is2c_base
     * @property {number|null} [code] s2c_base code
     * @property {string|null} [msg] s2c_base msg
     */

    /**
     * Constructs a new s2c_base.
     * @exports s2c_base
     * @classdesc Represents a s2c_base.
     * @implements Is2c_base
     * @constructor
     * @param {Is2c_base=} [properties] Properties to set
     */
    function s2c_base(properties) {
        if (properties)
            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                if (properties[keys[i]] != null)
                    this[keys[i]] = properties[keys[i]];
    }

    /**
     * s2c_base code.
     * @member {number} code
     * @memberof s2c_base
     * @instance
     */
    s2c_base.prototype.code = 0;

    /**
     * s2c_base msg.
     * @member {string} msg
     * @memberof s2c_base
     * @instance
     */
    s2c_base.prototype.msg = "";

    /**
     * Creates a new s2c_base instance using the specified properties.
     * @function create
     * @memberof s2c_base
     * @static
     * @param {Is2c_base=} [properties] Properties to set
     * @returns {s2c_base} s2c_base instance
     */
    s2c_base.create = function create(properties) {
        return new s2c_base(properties);
    };

    /**
     * Encodes the specified s2c_base message. Does not implicitly {@link s2c_base.verify|verify} messages.
     * @function encode
     * @memberof s2c_base
     * @static
     * @param {Is2c_base} message s2c_base message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    s2c_base.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.code != null && Object.hasOwnProperty.call(message, "code"))
            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
        if (message.msg != null && Object.hasOwnProperty.call(message, "msg"))
            writer.uint32(/* id 2, wireType 2 =*/18).string(message.msg);
        return writer;
    };

    /**
     * Encodes the specified s2c_base message, length delimited. Does not implicitly {@link s2c_base.verify|verify} messages.
     * @function encodeDelimited
     * @memberof s2c_base
     * @static
     * @param {Is2c_base} message s2c_base message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    s2c_base.encodeDelimited = function encodeDelimited(message, writer) {
        return this.encode(message, writer).ldelim();
    };

    /**
     * Decodes a s2c_base message from the specified reader or buffer.
     * @function decode
     * @memberof s2c_base
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @param {number} [length] Message length if known beforehand
     * @returns {s2c_base} s2c_base
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    s2c_base.decode = function decode(reader, length) {
        if (!(reader instanceof $Reader))
            reader = $Reader.create(reader);
        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.s2c_base();
        while (reader.pos < end) {
            var tag = reader.uint32();
            switch (tag >>> 3) {
            case 1: {
                    message.code = reader.int32();
                    break;
                }
            case 2: {
                    message.msg = reader.string();
                    break;
                }
            default:
                reader.skipType(tag & 7);
                break;
            }
        }
        return message;
    };

    /**
     * Decodes a s2c_base message from the specified reader or buffer, length delimited.
     * @function decodeDelimited
     * @memberof s2c_base
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @returns {s2c_base} s2c_base
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    s2c_base.decodeDelimited = function decodeDelimited(reader) {
        if (!(reader instanceof $Reader))
            reader = new $Reader(reader);
        return this.decode(reader, reader.uint32());
    };

    /**
     * Verifies a s2c_base message.
     * @function verify
     * @memberof s2c_base
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    s2c_base.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.code != null && message.hasOwnProperty("code"))
            if (!$util.isInteger(message.code))
                return "code: integer expected";
        if (message.msg != null && message.hasOwnProperty("msg"))
            if (!$util.isString(message.msg))
                return "msg: string expected";
        return null;
    };

    /**
     * Creates a s2c_base message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof s2c_base
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {s2c_base} s2c_base
     */
    s2c_base.fromObject = function fromObject(object) {
        if (object instanceof $root.s2c_base)
            return object;
        var message = new $root.s2c_base();
        if (object.code != null)
            message.code = object.code | 0;
        if (object.msg != null)
            message.msg = String(object.msg);
        return message;
    };

    /**
     * Creates a plain object from a s2c_base message. Also converts values to other types if specified.
     * @function toObject
     * @memberof s2c_base
     * @static
     * @param {s2c_base} message s2c_base
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    s2c_base.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.code = 0;
            object.msg = "";
        }
        if (message.code != null && message.hasOwnProperty("code"))
            object.code = message.code;
        if (message.msg != null && message.hasOwnProperty("msg"))
            object.msg = message.msg;
        return object;
    };

    /**
     * Converts this s2c_base to JSON.
     * @function toJSON
     * @memberof s2c_base
     * @instance
     * @returns {Object.<string,*>} JSON object
     */
    s2c_base.prototype.toJSON = function toJSON() {
        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
    };

    /**
     * Gets the default type url for s2c_base
     * @function getTypeUrl
     * @memberof s2c_base
     * @static
     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns {string} The default type url
     */
    s2c_base.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
        if (typeUrlPrefix === undefined) {
            typeUrlPrefix = "type.googleapis.com";
        }
        return typeUrlPrefix + "/s2c_base";
    };

    return s2c_base;
})();

$root.c2s_login = (function() {

    /**
     * Properties of a c2s_login.
     * @exports Ic2s_login
     * @interface Ic2s_login
     * @property {string|null} [credential] c2s_login credential
     * @property {string|null} [iv] c2s_login iv
     */

    /**
     * Constructs a new c2s_login.
     * @exports c2s_login
     * @classdesc Represents a c2s_login.
     * @implements Ic2s_login
     * @constructor
     * @param {Ic2s_login=} [properties] Properties to set
     */
    function c2s_login(properties) {
        if (properties)
            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                if (properties[keys[i]] != null)
                    this[keys[i]] = properties[keys[i]];
    }

    /**
     * c2s_login credential.
     * @member {string} credential
     * @memberof c2s_login
     * @instance
     */
    c2s_login.prototype.credential = "";

    /**
     * c2s_login iv.
     * @member {string} iv
     * @memberof c2s_login
     * @instance
     */
    c2s_login.prototype.iv = "";

    /**
     * Creates a new c2s_login instance using the specified properties.
     * @function create
     * @memberof c2s_login
     * @static
     * @param {Ic2s_login=} [properties] Properties to set
     * @returns {c2s_login} c2s_login instance
     */
    c2s_login.create = function create(properties) {
        return new c2s_login(properties);
    };

    /**
     * Encodes the specified c2s_login message. Does not implicitly {@link c2s_login.verify|verify} messages.
     * @function encode
     * @memberof c2s_login
     * @static
     * @param {Ic2s_login} message c2s_login message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    c2s_login.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.credential != null && Object.hasOwnProperty.call(message, "credential"))
            writer.uint32(/* id 1, wireType 2 =*/10).string(message.credential);
        if (message.iv != null && Object.hasOwnProperty.call(message, "iv"))
            writer.uint32(/* id 2, wireType 2 =*/18).string(message.iv);
        return writer;
    };

    /**
     * Encodes the specified c2s_login message, length delimited. Does not implicitly {@link c2s_login.verify|verify} messages.
     * @function encodeDelimited
     * @memberof c2s_login
     * @static
     * @param {Ic2s_login} message c2s_login message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    c2s_login.encodeDelimited = function encodeDelimited(message, writer) {
        return this.encode(message, writer).ldelim();
    };

    /**
     * Decodes a c2s_login message from the specified reader or buffer.
     * @function decode
     * @memberof c2s_login
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @param {number} [length] Message length if known beforehand
     * @returns {c2s_login} c2s_login
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    c2s_login.decode = function decode(reader, length) {
        if (!(reader instanceof $Reader))
            reader = $Reader.create(reader);
        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.c2s_login();
        while (reader.pos < end) {
            var tag = reader.uint32();
            switch (tag >>> 3) {
            case 1: {
                    message.credential = reader.string();
                    break;
                }
            case 2: {
                    message.iv = reader.string();
                    break;
                }
            default:
                reader.skipType(tag & 7);
                break;
            }
        }
        return message;
    };

    /**
     * Decodes a c2s_login message from the specified reader or buffer, length delimited.
     * @function decodeDelimited
     * @memberof c2s_login
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @returns {c2s_login} c2s_login
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    c2s_login.decodeDelimited = function decodeDelimited(reader) {
        if (!(reader instanceof $Reader))
            reader = new $Reader(reader);
        return this.decode(reader, reader.uint32());
    };

    /**
     * Verifies a c2s_login message.
     * @function verify
     * @memberof c2s_login
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    c2s_login.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.credential != null && message.hasOwnProperty("credential"))
            if (!$util.isString(message.credential))
                return "credential: string expected";
        if (message.iv != null && message.hasOwnProperty("iv"))
            if (!$util.isString(message.iv))
                return "iv: string expected";
        return null;
    };

    /**
     * Creates a c2s_login message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof c2s_login
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {c2s_login} c2s_login
     */
    c2s_login.fromObject = function fromObject(object) {
        if (object instanceof $root.c2s_login)
            return object;
        var message = new $root.c2s_login();
        if (object.credential != null)
            message.credential = String(object.credential);
        if (object.iv != null)
            message.iv = String(object.iv);
        return message;
    };

    /**
     * Creates a plain object from a c2s_login message. Also converts values to other types if specified.
     * @function toObject
     * @memberof c2s_login
     * @static
     * @param {c2s_login} message c2s_login
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    c2s_login.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.credential = "";
            object.iv = "";
        }
        if (message.credential != null && message.hasOwnProperty("credential"))
            object.credential = message.credential;
        if (message.iv != null && message.hasOwnProperty("iv"))
            object.iv = message.iv;
        return object;
    };

    /**
     * Converts this c2s_login to JSON.
     * @function toJSON
     * @memberof c2s_login
     * @instance
     * @returns {Object.<string,*>} JSON object
     */
    c2s_login.prototype.toJSON = function toJSON() {
        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
    };

    /**
     * Gets the default type url for c2s_login
     * @function getTypeUrl
     * @memberof c2s_login
     * @static
     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns {string} The default type url
     */
    c2s_login.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
        if (typeUrlPrefix === undefined) {
            typeUrlPrefix = "type.googleapis.com";
        }
        return typeUrlPrefix + "/c2s_login";
    };

    return c2s_login;
})();

$root.s2c_login = (function() {

    /**
     * Properties of a s2c_login.
     * @exports Is2c_login
     * @interface Is2c_login
     * @property {Is2c_base|null} [base] s2c_login base
     * @property {string|null} [createTime] s2c_login createTime
     * @property {string|null} [name] s2c_login name
     */

    /**
     * Constructs a new s2c_login.
     * @exports s2c_login
     * @classdesc Represents a s2c_login.
     * @implements Is2c_login
     * @constructor
     * @param {Is2c_login=} [properties] Properties to set
     */
    function s2c_login(properties) {
        if (properties)
            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                if (properties[keys[i]] != null)
                    this[keys[i]] = properties[keys[i]];
    }

    /**
     * s2c_login base.
     * @member {Is2c_base|null|undefined} base
     * @memberof s2c_login
     * @instance
     */
    s2c_login.prototype.base = null;

    /**
     * s2c_login createTime.
     * @member {string} createTime
     * @memberof s2c_login
     * @instance
     */
    s2c_login.prototype.createTime = "";

    /**
     * s2c_login name.
     * @member {string} name
     * @memberof s2c_login
     * @instance
     */
    s2c_login.prototype.name = "";

    /**
     * Creates a new s2c_login instance using the specified properties.
     * @function create
     * @memberof s2c_login
     * @static
     * @param {Is2c_login=} [properties] Properties to set
     * @returns {s2c_login} s2c_login instance
     */
    s2c_login.create = function create(properties) {
        return new s2c_login(properties);
    };

    /**
     * Encodes the specified s2c_login message. Does not implicitly {@link s2c_login.verify|verify} messages.
     * @function encode
     * @memberof s2c_login
     * @static
     * @param {Is2c_login} message s2c_login message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    s2c_login.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.base != null && Object.hasOwnProperty.call(message, "base"))
            $root.s2c_base.encode(message.base, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        if (message.createTime != null && Object.hasOwnProperty.call(message, "createTime"))
            writer.uint32(/* id 2, wireType 2 =*/18).string(message.createTime);
        if (message.name != null && Object.hasOwnProperty.call(message, "name"))
            writer.uint32(/* id 3, wireType 2 =*/26).string(message.name);
        return writer;
    };

    /**
     * Encodes the specified s2c_login message, length delimited. Does not implicitly {@link s2c_login.verify|verify} messages.
     * @function encodeDelimited
     * @memberof s2c_login
     * @static
     * @param {Is2c_login} message s2c_login message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    s2c_login.encodeDelimited = function encodeDelimited(message, writer) {
        return this.encode(message, writer).ldelim();
    };

    /**
     * Decodes a s2c_login message from the specified reader or buffer.
     * @function decode
     * @memberof s2c_login
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @param {number} [length] Message length if known beforehand
     * @returns {s2c_login} s2c_login
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    s2c_login.decode = function decode(reader, length) {
        if (!(reader instanceof $Reader))
            reader = $Reader.create(reader);
        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.s2c_login();
        while (reader.pos < end) {
            var tag = reader.uint32();
            switch (tag >>> 3) {
            case 1: {
                    message.base = $root.s2c_base.decode(reader, reader.uint32());
                    break;
                }
            case 2: {
                    message.createTime = reader.string();
                    break;
                }
            case 3: {
                    message.name = reader.string();
                    break;
                }
            default:
                reader.skipType(tag & 7);
                break;
            }
        }
        return message;
    };

    /**
     * Decodes a s2c_login message from the specified reader or buffer, length delimited.
     * @function decodeDelimited
     * @memberof s2c_login
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @returns {s2c_login} s2c_login
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    s2c_login.decodeDelimited = function decodeDelimited(reader) {
        if (!(reader instanceof $Reader))
            reader = new $Reader(reader);
        return this.decode(reader, reader.uint32());
    };

    /**
     * Verifies a s2c_login message.
     * @function verify
     * @memberof s2c_login
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    s2c_login.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.base != null && message.hasOwnProperty("base")) {
            var error = $root.s2c_base.verify(message.base);
            if (error)
                return "base." + error;
        }
        if (message.createTime != null && message.hasOwnProperty("createTime"))
            if (!$util.isString(message.createTime))
                return "createTime: string expected";
        if (message.name != null && message.hasOwnProperty("name"))
            if (!$util.isString(message.name))
                return "name: string expected";
        return null;
    };

    /**
     * Creates a s2c_login message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof s2c_login
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {s2c_login} s2c_login
     */
    s2c_login.fromObject = function fromObject(object) {
        if (object instanceof $root.s2c_login)
            return object;
        var message = new $root.s2c_login();
        if (object.base != null) {
            if (typeof object.base !== "object")
                throw TypeError(".s2c_login.base: object expected");
            message.base = $root.s2c_base.fromObject(object.base);
        }
        if (object.createTime != null)
            message.createTime = String(object.createTime);
        if (object.name != null)
            message.name = String(object.name);
        return message;
    };

    /**
     * Creates a plain object from a s2c_login message. Also converts values to other types if specified.
     * @function toObject
     * @memberof s2c_login
     * @static
     * @param {s2c_login} message s2c_login
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    s2c_login.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.base = null;
            object.createTime = "";
            object.name = "";
        }
        if (message.base != null && message.hasOwnProperty("base"))
            object.base = $root.s2c_base.toObject(message.base, options);
        if (message.createTime != null && message.hasOwnProperty("createTime"))
            object.createTime = message.createTime;
        if (message.name != null && message.hasOwnProperty("name"))
            object.name = message.name;
        return object;
    };

    /**
     * Converts this s2c_login to JSON.
     * @function toJSON
     * @memberof s2c_login
     * @instance
     * @returns {Object.<string,*>} JSON object
     */
    s2c_login.prototype.toJSON = function toJSON() {
        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
    };

    /**
     * Gets the default type url for s2c_login
     * @function getTypeUrl
     * @memberof s2c_login
     * @static
     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns {string} The default type url
     */
    s2c_login.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
        if (typeUrlPrefix === undefined) {
            typeUrlPrefix = "type.googleapis.com";
        }
        return typeUrlPrefix + "/s2c_login";
    };

    return s2c_login;
})();

$root.s2c_kick = (function() {

    /**
     * Properties of a s2c_kick.
     * @exports Is2c_kick
     * @interface Is2c_kick
     * @property {Is2c_base|null} [base] s2c_kick base
     * @property {string|null} [msg] s2c_kick msg
     */

    /**
     * Constructs a new s2c_kick.
     * @exports s2c_kick
     * @classdesc Represents a s2c_kick.
     * @implements Is2c_kick
     * @constructor
     * @param {Is2c_kick=} [properties] Properties to set
     */
    function s2c_kick(properties) {
        if (properties)
            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                if (properties[keys[i]] != null)
                    this[keys[i]] = properties[keys[i]];
    }

    /**
     * s2c_kick base.
     * @member {Is2c_base|null|undefined} base
     * @memberof s2c_kick
     * @instance
     */
    s2c_kick.prototype.base = null;

    /**
     * s2c_kick msg.
     * @member {string} msg
     * @memberof s2c_kick
     * @instance
     */
    s2c_kick.prototype.msg = "";

    /**
     * Creates a new s2c_kick instance using the specified properties.
     * @function create
     * @memberof s2c_kick
     * @static
     * @param {Is2c_kick=} [properties] Properties to set
     * @returns {s2c_kick} s2c_kick instance
     */
    s2c_kick.create = function create(properties) {
        return new s2c_kick(properties);
    };

    /**
     * Encodes the specified s2c_kick message. Does not implicitly {@link s2c_kick.verify|verify} messages.
     * @function encode
     * @memberof s2c_kick
     * @static
     * @param {Is2c_kick} message s2c_kick message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    s2c_kick.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.base != null && Object.hasOwnProperty.call(message, "base"))
            $root.s2c_base.encode(message.base, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        if (message.msg != null && Object.hasOwnProperty.call(message, "msg"))
            writer.uint32(/* id 2, wireType 2 =*/18).string(message.msg);
        return writer;
    };

    /**
     * Encodes the specified s2c_kick message, length delimited. Does not implicitly {@link s2c_kick.verify|verify} messages.
     * @function encodeDelimited
     * @memberof s2c_kick
     * @static
     * @param {Is2c_kick} message s2c_kick message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    s2c_kick.encodeDelimited = function encodeDelimited(message, writer) {
        return this.encode(message, writer).ldelim();
    };

    /**
     * Decodes a s2c_kick message from the specified reader or buffer.
     * @function decode
     * @memberof s2c_kick
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @param {number} [length] Message length if known beforehand
     * @returns {s2c_kick} s2c_kick
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    s2c_kick.decode = function decode(reader, length) {
        if (!(reader instanceof $Reader))
            reader = $Reader.create(reader);
        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.s2c_kick();
        while (reader.pos < end) {
            var tag = reader.uint32();
            switch (tag >>> 3) {
            case 1: {
                    message.base = $root.s2c_base.decode(reader, reader.uint32());
                    break;
                }
            case 2: {
                    message.msg = reader.string();
                    break;
                }
            default:
                reader.skipType(tag & 7);
                break;
            }
        }
        return message;
    };

    /**
     * Decodes a s2c_kick message from the specified reader or buffer, length delimited.
     * @function decodeDelimited
     * @memberof s2c_kick
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @returns {s2c_kick} s2c_kick
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    s2c_kick.decodeDelimited = function decodeDelimited(reader) {
        if (!(reader instanceof $Reader))
            reader = new $Reader(reader);
        return this.decode(reader, reader.uint32());
    };

    /**
     * Verifies a s2c_kick message.
     * @function verify
     * @memberof s2c_kick
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    s2c_kick.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.base != null && message.hasOwnProperty("base")) {
            var error = $root.s2c_base.verify(message.base);
            if (error)
                return "base." + error;
        }
        if (message.msg != null && message.hasOwnProperty("msg"))
            if (!$util.isString(message.msg))
                return "msg: string expected";
        return null;
    };

    /**
     * Creates a s2c_kick message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof s2c_kick
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {s2c_kick} s2c_kick
     */
    s2c_kick.fromObject = function fromObject(object) {
        if (object instanceof $root.s2c_kick)
            return object;
        var message = new $root.s2c_kick();
        if (object.base != null) {
            if (typeof object.base !== "object")
                throw TypeError(".s2c_kick.base: object expected");
            message.base = $root.s2c_base.fromObject(object.base);
        }
        if (object.msg != null)
            message.msg = String(object.msg);
        return message;
    };

    /**
     * Creates a plain object from a s2c_kick message. Also converts values to other types if specified.
     * @function toObject
     * @memberof s2c_kick
     * @static
     * @param {s2c_kick} message s2c_kick
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    s2c_kick.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.base = null;
            object.msg = "";
        }
        if (message.base != null && message.hasOwnProperty("base"))
            object.base = $root.s2c_base.toObject(message.base, options);
        if (message.msg != null && message.hasOwnProperty("msg"))
            object.msg = message.msg;
        return object;
    };

    /**
     * Converts this s2c_kick to JSON.
     * @function toJSON
     * @memberof s2c_kick
     * @instance
     * @returns {Object.<string,*>} JSON object
     */
    s2c_kick.prototype.toJSON = function toJSON() {
        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
    };

    /**
     * Gets the default type url for s2c_kick
     * @function getTypeUrl
     * @memberof s2c_kick
     * @static
     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns {string} The default type url
     */
    s2c_kick.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
        if (typeUrlPrefix === undefined) {
            typeUrlPrefix = "type.googleapis.com";
        }
        return typeUrlPrefix + "/s2c_kick";
    };

    return s2c_kick;
})();

module.exports = $root;
